﻿Public Class clsInhTrPozycjeSchematu
    Inherits clsTrPozycjeSchematu

#Region "Attributes"

    Private mvarPracownik As clsPracownik
    Private mvarPakowanie As clsPakowanie
    Private mvarGrupaMaszyny As clsGrupaMaszyny
    Private mvarOpcjaPozycjiSchematu As clsTrOpcjePozycjiSchematu
    Private mvarStatus As clsStatus

    Private mvarMaszyny As Collection(Of clsInhTrMaszynaPozycjiSchematu)
    Private mvarMaszynyDel As Collection(Of clsInhTrMaszynaPozycjiSchematu)

#End Region

#Region "Properties"

    Public Property Pracownik() As clsPracownik
        Get
            Return mvarPracownik
        End Get
        Set(ByVal value As clsPracownik)
            mvarPracownik = value
        End Set
    End Property

    Public Property Pakowanie() As clsPakowanie
        Get
            Return mvarPakowanie
        End Get
        Set(ByVal value As clsPakowanie)
            mvarPakowanie = value
        End Set
    End Property

    Public Property GrupaMaszyny() As clsGrupaMaszyny
        Get
            Return mvarGrupaMaszyny
        End Get
        Set(ByVal value As clsGrupaMaszyny)
            mvarGrupaMaszyny = value
        End Set
    End Property

    Public Property Status() As clsStatus
        Get
            Return mvarStatus
        End Get
        Set(ByVal value As clsStatus)
            mvarStatus = value
        End Set
    End Property

    Public Property OpcjaPozycjiSchematu() As clsTrOpcjePozycjiSchematu
        Get
            Return mvarOpcjaPozycjiSchematu
        End Get
        Set(ByVal value As clsTrOpcjePozycjiSchematu)
            mvarOpcjaPozycjiSchematu = value
        End Set
    End Property

    Public Property Maszyny() As Collection(Of clsInhTrMaszynaPozycjiSchematu)
        Get
            Return mvarMaszyny
        End Get
        Set(ByVal value As Collection(Of clsInhTrMaszynaPozycjiSchematu))
            mvarMaszyny = value
        End Set
    End Property

    Public Property MaszynyDel() As Collection(Of clsInhTrMaszynaPozycjiSchematu)
        Get
            Return mvarMaszynyDel
        End Get
        Set(ByVal value As Collection(Of clsInhTrMaszynaPozycjiSchematu))
            mvarMaszynyDel = value
        End Set
    End Property

#End Region

#Region "Methods"

    Public Sub New()
        MyBase.New()
        mvarPracownik = New clsPracownik()
        mvarPakowanie = New clsPakowanie()
        mvarGrupaMaszyny = New clsGrupaMaszyny()
        mvarOpcjaPozycjiSchematu = New clsTrOpcjePozycjiSchematu()
        mvarStatus = New clsStatus
        mvarMaszyny = New Collection(Of clsInhTrMaszynaPozycjiSchematu)
        mvarMaszynyDel = New Collection(Of clsInhTrMaszynaPozycjiSchematu)
    End Sub

    Public Sub New(ByVal ID As Integer, ByVal lvarDbHolder As clsDataBase)

        MyBase.New(ID, lvarDbHolder, VAR_ERROR_HANDLER)

        mvarPracownik = New clsPracownik(MyBase.PracownikId, lvarDbHolder, VAR_ERROR_HANDLER)
        mvarPakowanie = New clsPakowanie(MyBase.PakowanieId, lvarDbHolder, VAR_ERROR_HANDLER)
        mvarGrupaMaszyny = New clsGrupaMaszyny(MyBase.GrupaMaszynyId, lvarDbHolder, VAR_ERROR_HANDLER)

        mvarStatus = New clsStatus(MyBase.StatusId, lvarDbHolder, VAR_ERROR_HANDLER)
        mvarOpcjaPozycjiSchematu = New clsTrOpcjePozycjiSchematu(MyBase.OpcjaPozycjiSchematuId, lvarDbHolder, VAR_ERROR_HANDLER)
        'POZYCJE SCHEMATU PRODUKCJI
        mvarMaszyny = New Collection(Of clsInhTrMaszynaPozycjiSchematu)
        mvarMaszynyDel = New Collection(Of clsInhTrMaszynaPozycjiSchematu)

        Dim lvarTabel As DataTable = PobierzMaszyny(lvarDbHolder, ID)

        If Not lvarTabel Is Nothing Then
            For Each lvarRow As DataRow In lvarTabel.Rows
                mvarMaszyny.Add(New clsInhTrMaszynaPozycjiSchematu(CInt(lvarRow.Item("id")), lvarDbHolder))
            Next
        End If

    End Sub

    Public Overloads Sub Save(ByVal lvarDbHolder As clsDataBase)

        MyBase.WymiarWejsciowy = Replace(MyBase.WymiarWejsciowy, ",", ".")
        MyBase.WymiarKoncowy = Replace(MyBase.WymiarKoncowy, ",", ".")
        MyBase.Save(lvarDbHolder, VAR_ERROR_HANDLER)

        For Each lvarPozycja As clsInhTrMaszynaPozycjiSchematu In mvarMaszynyDel
            lvarPozycja.Delete(lvarDbHolder)
        Next

        For Each lvarMaszyna As clsInhTrMaszynaPozycjiSchematu In mvarMaszyny
            lvarMaszyna.PozycjeSchematuProdukcjiId = MyBase.Id
            lvarMaszyna.Save(lvarDbHolder)
        Next


    End Sub

    Public Overloads Sub Delete(ByVal lvarDbHolder As clsDataBase)

        For Each lvarMaszyna As clsInhTrMaszynaPozycjiSchematu In mvarMaszyny
            lvarMaszyna.Delete(lvarDbHolder, VAR_ERROR_HANDLER)
        Next
        MyBase.Delete(lvarDbHolder, VAR_ERROR_HANDLER)

    End Sub

    Shared Function PobierzMaszyny(ByVal lvarDbHolder As clsDataBase, IdPozycjiSchematu As Integer) As DataTable

        Dim lvarReader As OdbcDataReader = Nothing
        Dim lvarReturn As DataTable

        If lvarDbHolder.IsOpen Then
            Dim lvarSqlRunner As New clsSqlRunner(lvarDbHolder, "queries_application_tracking", "cls_pozycje_schematu", 1, VAR_ERROR_HANDLER)


            With lvarSqlRunner
                .AddParameter("p_id_pozycji_schematu", CStr(IdPozycjiSchematu))
                lvarReader = .ExecuteQuery
            End With

            If lvarReader.HasRows Then
                lvarReturn = New DataTable
                lvarReturn.Load(lvarReader)
            End If

        End If

        Return lvarReturn

    End Function

#End Region

End Class
